/* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
 * only version 2 as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 */

/include/ "skeleton.dtsi"

/ {
	model = "Qualcomm MPQ8092";
	compatible = "qcom,mpq8092";
	interrupt-parent = <&intc>;

	soc: soc { };
};

/include/ "mpq8092-iommu.dtsi"
/include/ "mpq8092-iommu-domains.dtsi"
/include/ "msm-gdsc.dtsi"
/include/ "mpq8092-ion.dtsi"

&soc {
	#address-cells = <1>;
	#size-cells = <1>;
	ranges;

	intc: interrupt-controller@f9000000 {
		compatible = "qcom,msm-qgic2";
		interrupt-controller;
		#interrupt-cells = <3>;
		reg = <0xf9000000 0x1000>,
		<0xf9002000 0x1000>;
	};

	msmgpio: gpio@fd510000 {
		compatible = "qcom,msm-gpio";
		gpio-controller;
		#gpio-cells = <2>;
		interrupt-controller;
		#interrupt-cells = <2>;
		reg = <0xfd510000 0x4000>;
		ngpio = <146>;
		interrupts = <0 208 0>;
		qcom,direct-connect-irqs = <8>;
	};

	timer {
		compatible = "arm,armv7-timer";
		interrupts = <1 2 0>, <1 3 0>;
		clock-frequency = <19200000>;
	};

	timer@f9020000 {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;
		compatible = "arm,armv7-timer-mem";
		reg = <0xf9020000 0x1000>;
		clock-frequency = <19200000>;

		frame@f9021000 {
			frame-number = <0>;
			interrupts = <0 8 0x4>,
				     <0 7 0x4>;
			reg = <0xf9021000 0x1000>,
			      <0xf9022000 0x1000>;
		};

		frame@f9023000 {
			frame-number = <1>;
			interrupts = <0 9 0x4>;
			reg = <0xf9023000 0x1000>;
			status = "disabled";
		};

		frame@f9024000 {
			frame-number = <2>;
			interrupts = <0 10 0x4>;
			reg = <0xf9024000 0x1000>;
			status = "disabled";
		};

		frame@f9025000 {
			frame-number = <3>;
			interrupts = <0 11 0x4>;
			reg = <0xf9025000 0x1000>;
			status = "disabled";
		};

		frame@f9026000 {
			frame-number = <4>;
			interrupts = <0 12 0x4>;
			reg = <0xf9026000 0x1000>;
			status = "disabled";
		};

		frame@f9027000 {
			frame-number = <5>;
			interrupts = <0 13 0x4>;
			reg = <0xf9027000 0x1000>;
			status = "disabled";
		};

		frame@f9028000 {
			frame-number = <6>;
			interrupts = <0 14 0x4>;
			reg = <0xf9028000 0x1000>;
			status = "disabled";
		};
	};

	serial@f991f000 {
		compatible = "qcom,msm-lsuart-v14";
		reg = <0xf991f000 0x1000>;
		interrupts = <0 109 0>;
		status = "disabled";
	};

	serial@f9922000 {
		compatible = "qcom,msm-lsuart-v14";
		reg = <0xf9922000 0x1000>;
		interrupts = <0 112 0>;
		status = "disabled";
	};

	serial@f995e000 {
		compatible = "qcom,msm-lsuart-v14";
		reg = <0xf995e000 0x1000>;
		interrupts = <0 114 0>;
		status = "disabled";
	};

	qcom,msm-imem@fe805000 {
                compatible = "qcom,msm-imem";
                reg = <0xfe805000 0x1000>; /* Address and size of IMEM */
	};

	usb@f9a55000 {
		compatible = "qcom,hsusb-otg";
		reg = <0xf9a55000 0x400>;
		interrupts = <0 134 0>, <0 140 0>;
		interrupt-names = "core_irq", "async_irq";

		HSUSB_VDDCX-supply = <&pma8084_s8>;
		HSUSB_1p8-supply = <&pma8084_l22>;
		HSUSB_3p3-supply = <&pma8084_l24>;
		qcom,vdd-voltage-level = <1050000 1050000>;

		qcom,hsusb-otg-phy-type = <2>;
		qcom,hsusb-otg-mode = <1>;
		qcom,hsusb-otg-otg-control = <1>;
		qcom,hsusb-otg-disable-reset;

		qcom,msm_bus,name = "usb_otg";
		qcom,msm_bus,num_cases = <3>;
		qcom,msm_bus,active_only = <0>;
		qcom,msm_bus,num_paths = <1>;
		qcom,msm-bus,vectors-KBps =
				<87 512 0 0>,
				<87 512 60000 960000>,
				<87 512 6000  6000>;
	};

	android_usb@fe8050c8 {
		compatible = "qcom,android-usb";
		reg = <0xfe8050c8 0xc8>;
		qcom,android-usb-swfi-latency = <1>;
	};

	spmi_bus: qcom,spmi@fc4c0000 {
		cell-index = <0>;
		compatible = "qcom,spmi-pmic-arb";
		reg-names = "core", "intr", "cnfg";
		reg = <0xfc4cf000 0x1000>,
		      <0Xfc4cb000 0x1000>,
		      <0Xfc4ca000 0x1000>;
		/* 190,ee0_krait_hlos_spmi_periph_irq */
		/* 187,channel_0_krait_hlos_trans_done_irq */
		interrupts = <0 190 0 0 187 0>;
		qcom,not-wakeup;
		qcom,pmic-arb-ee = <0>;
		qcom,pmic-arb-channel = <0>;
	};

	sdcc1: qcom,sdcc@f9824000 {
		cell-index = <1>; /* SDC1 eMMC slot */
		compatible = "qcom,msm-sdcc";
		reg = <0xf9824000 0x800>;
		reg-names = "core_mem";
		interrupts = <0 123 0>;
		interrupt-names = "core_irq";

		qcom,pad-pull-on = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
		qcom,pad-pull-off = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
		qcom,pad-drv-on = <0x4 0x4 0x4>; /* 10mA, 10mA, 10mA */
		qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */

		qcom,clk-rates = <400000 25000000 50000000 100000000 200000000>;
		qcom,sup-voltages = <2950 2950>;
		qcom,bus-width = <8>;
		qcom,nonremovable;
		qcom,bus-speed-mode = "HS200_1p8v", "DDR_1p8v";
	};

	sdcc2: qcom,sdcc@f98a4000 {
		cell-index = <2>; /* SDC2 SD card slot */
		compatible = "qcom,msm-sdcc";
		reg = <0xf98a4000 0x800>;
		reg-names = "core_mem";
		interrupts = <0 125 0>;
		interrupt-names = "core_irq";

		qcom,pad-pull-on = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
		qcom,pad-pull-off = <0x0 0x3 0x3>; /* no-pull, pull-up, pull-up */
		qcom,pad-drv-on = <0x4 0x4 0x4>; /* 10mA, 10mA, 10mA */
		qcom,pad-drv-off = <0x0 0x0 0x0>; /* 2mA, 2mA, 2mA */

		qcom,clk-rates = <400000 25000000 50000000 100000000 200000000>;
		qcom,sup-voltages = <2950 2950>;
		qcom,bus-width = <4>;
		qcom,xpc;
		qcom,bus-speed-mode = "SDR12", "SDR25", "SDR50", "DDR50", "SDR104";
		qcom,current-limit = <800>;
	};

	qcom,sps@f9980000 {
		compatible = "qcom,msm_sps";
		reg = <0xf9984000 0x15000>,
		      <0xf9999000 0xb000>;
		reg-names = "bam_mem", "core_mem";
		interrupts = <0 94 0>;
		qcom,pipe-attr-ee;
	};

	sata: sata@fc580000 {
		compatible = "qcom,msm-ahci";
		reg = <0xfc580000 0x17c>;
		interrupts = <0 243 0>;
	};

	qcom,wdt@f9017000 {
		compatible = "qcom,msm-watchdog";
		reg = <0xf9017000 0x1000>;
		interrupts = <0 3 0>, <0 4 0>;
		qcom,bark-time = <11000>;
		qcom,pet-time = <10000>;
		qcom,ipi-ping;
	};

	qcom,ocmem@fdd00000 {
		compatible = "qcom,msm-ocmem";
		reg = <0xfdd00000 0x2000>,
		      <0xfdd02000 0x2000>,
		      <0xfe070000 0x400>,
		      <0xfec00000 0x180000>;
		reg-names = "ocmem_ctrl_physical", "dm_ctrl_physical", "br_ctrl_physical", "ocmem_physical";
		interrupts = <0 76 0>, <0 77 0>;
		interrupt-names = "ocmem_irq", "dm_irq";
		qcom,ocmem-num-regions = <0x3>;
		qcom,ocmem-num-macros = <0x18>;
		qcom,resource-type = <0x706d636f>;
		#address-cells = <1>;
		#size-cells = <1>;
		ranges = <0x0 0xfec00000 0x180000>;

		partition@0 {
			reg = <0x0 0x100000>;
			qcom,ocmem-part-name = "graphics";
			qcom,ocmem-part-min = <0x80000>;
		};

		partition@80000 {
			reg = <0x100000 0x80000>;
			qcom,ocmem-part-name = "lp_audio";
			qcom,ocmem-part-min = <0x80000>;
		};

		partition@100000 {
			reg = <0x100000 0x80000>;
			qcom,ocmem-part-name = "video";
			qcom,ocmem-part-min = <0x55000>;
		};
	};
};

&gdsc_venus {
	status = "ok";
};

&gdsc_mdss {
	status = "ok";
};

&gdsc_jpeg {
	status = "ok";
};

&gdsc_vpu {
	status = "ok";
};

&gdsc_oxili_gx {
	status = "ok";
};

&gdsc_oxili_cx {
	status = "ok";
};

&gdsc_usb_hsic {
	status = "ok";
};

&gdsc_vcap {
	status = "ok";
};

/include/ "msm-pma8084.dtsi"
/include/ "mpq8092-regulator.dtsi"
